]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
unlockDialog: Defend against absence of blur effect
authorZephaniah E. Loss-Cutler-Hull <warp@aehallh.com>
Sat, 15 Aug 2020 10:23:27 +0000 (03:23 -0700)
committerFlorian Müllner <fmuellner@gnome.org>
Mon, 24 Aug 2020 15:27:14 +0000 (17:27 +0200)
widget.get_effect(...) can return null while locking the screen, resulting
in a TypeError. In this situation the screen ends up black with a cursor
but never going to sleep, and moving the mouse brings the old screen
contents up but does not allow unlocking.

unlockDialog.js assumes that widget.get_effect will return non-null,
but other places such as getWindowDimmer in windowManager.js go out of
their way to be more careful.

[smcv: Add commit message, remove hard tabs, add missing semicolon]

Resolves: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/3071
Bug-Debian: https://bugs.debian.org/968440

js/ui/unlockDialog.js

index aea7b6004e17c355b42791f3efb8badfc9a95995..4f461f398026be1d54a593303de625bd4f79ba04 100644 (file)
@@ -647,10 +647,14 @@ var UnlockDialog = GObject.registerClass({
         const themeContext = St.ThemeContext.get_for_stage(global.stage);
 
         for (const widget of this._backgroundGroup) {
-            widget.get_effect('blur').set({
-                brightness: BLUR_BRIGHTNESS,
-                sigma: BLUR_SIGMA * themeContext.scale_factor,
-            });
+            const effect = widget.get_effect('blur');
+
+            if (effect) {
+                effect.set({
+                    brightness: BLUR_BRIGHTNESS,
+                    sigma: BLUR_SIGMA * themeContext.scale_factor,
+                });
+            }
         }
     }